#pragma once
#include "data_structure.h"
#include "kalman_3d.h"

class Track3D
{

public:
    Track3D()=default;
    ~Track3D()=default;

public:
    /**
     * 初始化三维航迹库
     */
    void track3d_init(Tracks3D tracks[MAX_TRACKS_3D]);

    /**
     * 计算三维空间中两点的欧氏距离
     */
    double distance3d(double x1, double y1, double z1, double x2, double y2, double z2);

    /**
     * 三维数据关联（最近邻法+波门限制）
     * 输入：点迹数组、点迹数量、航迹库
     */
    void data_association3d(RadarPoint3D *points, const int point_num, Tracks3D tracks[MAX_TRACKS_3D]);

    /**
     * 处理一帧三维雷达数据（主流程）
     */
    void radar3d_track_process(RadarPoint3D *points, int point_num, Tracks3D tracks[MAX_TRACKS_3D]);
};

// /**
//  * 初始化三维航迹库
//  */
// void track3d_init(Track3D tracks[MAX_TRACKS_3D]);

// /**
//  * 计算三维空间中两点的欧氏距离
//  */
// double distance3d(double x1, double y1, double z1, double x2, double y2, double z2);

// /**
//  * 三维数据关联（最近邻法+波门限制）
//  * 输入：点迹数组、点迹数量、航迹库
//  */
// void data_association3d(RadarPoint3D *points, const int point_num, Track3D tracks[MAX_TRACKS_3D]);

// /**
//  * 处理一帧三维雷达数据（主流程）
//  */
// void radar3d_track_process(RadarPoint3D *points, int point_num, Track3D tracks[MAX_TRACKS_3D]);
